//WY2 路灯
//https://www.nowcoder.com/practice/62cdf520b9d94616b6644ac03a0306ff?tpId=182
//较难,动态规划
//一条长l的笔直的街道上有n个路灯，若这条街的起点为0，终点为l，第i个路灯坐标为ai，
//每盏灯可以覆盖到的最远距离为d，为了照明需求，所有灯的灯光必须覆盖整条街，
//但是为了省电，要使这个d最小，请找到这个最小的d。
//输入描述：
//每组数据第一行两个整数n和l（n大于0小于等于1000，l小于等于1000000000大于0）。
//第二行有n个整数(均大于等于0小于等于l)，为每盏灯的坐标，多个路灯可以在同一点。
//输出描述：
//输出答案，保留两位小数。
//示例1
//输入：
//7 15
//15 5 3 7 9 14 0
//复制
//输出：
//2.50

// 灯n个，路长l
// 输出最小的d。一盏灯光最远d

#include <bits/stdc++.h>
using namespace std;

float streetLight(vector<int>& vtLight, int len) {
//    vtLight.push_back(0);
//    vtLight.push_back(len);
    sort(vtLight.begin(), vtLight.end());
    float minDis = max(vtLight[0], len-vtLight[vtLight.size()-1]);
    for (size_t i=1; i<vtLight.size()-1; i++) {
        minDis = max((vtLight[i]-vtLight[i-1])/2.0f,minDis);
    }
    return minDis;
}

int main_light() {
    int n, l =0;
    while(cin>> n >> l) {
        vector<int> vtLight(n);
        for (int i=0; i<n; i++){
            cin >> vtLight[i];
        }
        printf("%.2f\n", streetLight(vtLight, l));
    }
    return 0;
}
